package com.example.designpatterns.facade;

/**
 * 外观模式演示类
 */
public class FacadePatternDemo {
    public static void main(String[] args) {
        System.out.println("===== 外观模式演示 =====");
        
        // 创建计算机外观对象
        ComputerFacade computer = new ComputerFacade();
        
        // 启动计算机 - 使用外观模式简化了复杂的启动流程
        computer.start();
        
        // 使用计算机运行程序
        computer.runProgram("文字处理软件");
        computer.runProgram("浏览器");
        
        // 关闭计算机 - 同样简化了关机流程
        computer.shutdown();
        
        // 演示不使用外观模式的复杂性（注释掉，仅作说明用）
        /*
        System.out.println("\n=== 不使用外观模式 ===\n");
        
        // 客户端需要了解所有子系统并正确协调它们
        BIOS bios = new BIOS();
        CPU cpu = new CPU();
        Memory memory = new Memory();
        HardDrive hardDrive = new HardDrive();
        OS os = new OS();
        
        // 启动流程
        bios.powerOn();
        bios.selfTest();
        bios.initHardware();
        bios.loadBootLoader();
        cpu.freeze();
        hardDrive.seekTrack(0);
        byte[] bootData = hardDrive.read(0, 512);
        memory.load(0, bootData);
        cpu.jump(0);
        cpu.execute();
        cpu.freeze();
        byte[] osData = hardDrive.read(2048, 8192);
        memory.load(1024, osData);
        cpu.jump(1024);
        cpu.unfreeze();
        os.loadKernel();
        os.startServices();
        os.showDesktop();
        
        // ... 更多复杂操作 ...
        */
    }
} 